package com.w.wx.service;

import com.w.wx.domain.Liked;
import org.springframework.data.redis.core.Cursor;

import java.util.*;


public interface RedisService {

    /**
     * 将点赞信息存到redis
     * type 标识对物品 0 对主评论 1 子评论 2
     * @param objId
     * @param openid
     */
    void saveLikedToRedis(Integer objId, String openid,String type);

    /**
     * 不喜欢，状态变为0
     * @param objId
     * @param openid
     */
    void unlikeFromRedis(Integer objId, String openid,String type);

    /**
     * 删除一条点赞记录
     * @param objId
     * @param openid
     */
    void deleteFromRedis(Integer objId, String openid,String type);

    /**
     * 该id的点赞数加1
     * type 为类别
     * @param objId
     */
    Long incrementLikedCount(Integer objId,String type, String openid);

    /**
     * 该id的点赞数减1
     * @param objId
     */
    void decrementLikedCount(Integer objId,String type, String openid);

    /**
     * 获取到所有点赞数据
     * @return
     */
    List<Liked> getLikedDataFromRedis();

    /**
     * 获取所有被点赞的数量,之后删除该hash表
     * @return
     */
    Cursor<Map.Entry<Object, Object>> getLikedCountFromRedis();

    /**
     * 获取对象的点赞数
     * @param objId
     * @param type
     * @return
     */
    int getOneInfoCount(Integer objId , String type);

    /**
     * redis挂掉后恢复数据
     * @param objId
     * @param type
     */
    void savaInfoFromDb2Re(Integer type);

}
